TCP協(xié)議是一種基于字節(jié)流的面向連接、可靠的傳輸層通信協(xié)議。TCP協(xié)議是專門為在不可靠的互聯(lián)網(wǎng)上提供可靠的端到端字節(jié)流而設(shè)計(jì)的傳輸協(xié)議。當(dāng)應(yīng)用層向TCP層發(fā)送一個(gè)用于網(wǎng)間傳輸?shù)?位數(shù)據(jù)流時(shí),TCP將數(shù)據(jù)流分成適當(dāng)長(zhǎng)度的段。最大傳輸段大小(MSS)通常受計(jì)算機(jī)所連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單位(MTU)限制。之后,TCP將數(shù)據(jù)包傳輸?shù)絀P層,IP層通過網(wǎng)絡(luò)將數(shù)據(jù)包傳輸?shù)浇邮諏?shí)體的TCP層。
一、TCP協(xié)議在什么情況下會(huì)丟包?
1.TCP協(xié)議定義是一種面向連接、可靠、基于字節(jié)流的傳輸層通信協(xié)議。
2.TCP是基于不可靠的網(wǎng)絡(luò)來實(shí)現(xiàn)可靠傳輸?shù)模隙〞?huì)有丟包的問題。
3.如果在通信過程中發(fā)現(xiàn)數(shù)據(jù)丟失或丟包,最大的可能就是程序在發(fā)送或接收過程中出現(xiàn)了問題。
例:我有2臺(tái)服務(wù)器,A和b,當(dāng)A服務(wù)器向b服務(wù)器發(fā)送數(shù)據(jù)的頻率過高時(shí),b服務(wù)器沒有時(shí)間處理,香港服務(wù)器,導(dǎo)致數(shù)據(jù)丟包。(原因可能是程序邏輯、多線程同步、緩沖區(qū)溢出)。如果A服務(wù)器不控制發(fā)送頻率或重傳數(shù)據(jù),那么B服務(wù)器收到的數(shù)據(jù)會(huì)更少。會(huì)造成數(shù)據(jù)丟失。
二、如何解決TCP協(xié)議丟包后的丟包問題。
為了滿足TCP協(xié)議而不丟失數(shù)據(jù)包。TCP協(xié)議有以下規(guī)定:
1.到達(dá)確認(rèn):接收端收到分片數(shù)據(jù)時(shí),根據(jù)分片數(shù)據(jù)的序列號(hào)向發(fā)送端發(fā)送確認(rèn)。
2.重復(fù)處理:作為IP數(shù)據(jù)報(bào)傳輸?shù)腡CP片段將被復(fù)制,TCP的接收端必須丟棄復(fù)制的數(shù)據(jù)。
3.數(shù)據(jù)分片:發(fā)送端對(duì)數(shù)據(jù)進(jìn)行分片,接收端對(duì)數(shù)據(jù)進(jìn)行重組。TCP決定了片段的大小,控制了片段的分裂和重組。
4.超時(shí)重傳:發(fā)送方在發(fā)送分片時(shí)設(shè)置超時(shí)定時(shí)器,VPS,定時(shí)器到期后如果沒有收到相應(yīng)的確認(rèn),則重傳分片數(shù)據(jù)。
5.數(shù)據(jù)校驗(yàn):TCP將保留其報(bào)頭和數(shù)據(jù)的校驗(yàn)和,這是一個(gè)端到端的校驗(yàn)和,用于檢測(cè)傳輸過程中數(shù)據(jù)的任何變化。如果收到的片段檢查有錯(cuò)誤,TCP會(huì)丟棄該片段,并且不確認(rèn)收到該報(bào)文段會(huì)導(dǎo)致對(duì)端超時(shí)重傳。
6.亂序處理:作為IP數(shù)據(jù)報(bào)傳輸?shù)腡CP片段在到達(dá)時(shí)可能會(huì)亂序。TCP將對(duì)接收到的數(shù)據(jù)重新排序,并以正確的順序?qū)⑵湟平唤o應(yīng)用層。
7.滑動(dòng)窗口:TCP連接每一側(cè)的接收緩沖區(qū)空間是固定的,接收端只允許另一端發(fā)送接收端緩沖區(qū)可以接受的數(shù)據(jù)。TCP在滑動(dòng)窗口的基礎(chǔ)上提供流量控制,防止較慢主機(jī)的緩沖區(qū)溢出。百度云加速買一送一(優(yōu)惠來源mfisp.com),租用或托管服務(wù)器可咨詢夢(mèng)飛云idc了解。